برای درک نحوه کارکرد یک SSD بهتر است در ابتدا با دو بخش مهم از آن آشنا شویم: کنترلر (Controller) و حافظه فلش NAND. این دو مؤلفه، به همراه چند آیتم دیگر بر روی بورد مدار چاپی (PCB) قرار گرفته و یک SSD را میسازند.
کنترلر (Controller)
درSSDها، کنترلر، یک پردازنده داخلی محسوب میشود که حافظه فلش را به میزبان (رایانه) متصل میکند. کنترلر وظیفه اجرای کدهایی را دارد که توسط firmware (یک سیستمعامل کوچک نصب شده بر روی SSD)، برای پاسخ به درخواستهای داده میزبان، ایجاد شدهاند. درواقع کنترلر، نحوه عملکرد و ارائه ویژگیهای مختلف SSD را تعیین میکند.
از جمله ویژگیهای مختلف SSD، میتوان به نوشتن، خواندن، پاککردن، بررسی وقوع خطا، Wear-Leveling یا Garbage Collection اشاره نمود.
توضیح: کنترلر SSD را نباید با کنترلر رابطکاربری I/O یا I/O Controller Interface اشتباه گرفت. کنترلرهای I/O، مانند پورتهای SATA، نحوه اتصال فیزیکی SSD به میزبان را تعیین میکنند که با توجه به عملکرد، آنها را از کنترلرهای SSD، متمایز میکند. اغلب SSDهای استاندارد از رابطهای کاربری SATA با سرعت انتقال ۱۵۰ مگابیت در ثانیه، SATA 2 با سرعت انتقال ۳ گیگابیت در ثانیه و SATA 3 با سرعت انتقال ۶ گیگابیت در ثانیه پشتیبانی میکنند. برخلاف کنترلر رابطکاربری، که به راحتی قابل مشاهده است، کنترلر SSD، درون درایو قرار گرفته و از دید کاربر پنهان است.
حافظه فلش NAND یا NAND flash memory
همه SSDهای مدرن از حافظههای فلش NAND استفاده میکنند که به عنوان مدارهای مجتمعشده (IC) برای ذخیرهسازی دادهها طراحی شدهاند. NANDهای طراحی شده برای سازمان ها یا فعالیــتهای تجـــاری عمــوماً از سلولهـــای تـــک لایه (SLC) و NANDهــــای طـــراحی شـــده بــــرای بـــــازار مصــــرفکننده از ســـلولهای چند لایه (Multiple-Layer-Cell) استفاده میکنند. مدل SLC، در مقایسه با مدل سلولهای چند لایه، سریعتر بوده و طول عمر و قیمت بیشتری دارند.

از آنجا که کنترلرهای یاد شده، پلاتر مغناطیسی (یعنی آنچه که در هارد دیسکهای معمولی شاهدشان هستیم) محسوب نمیشوند، فرآیند نوشتن دیتا در SSD، زمانی اتفاق میافتد که کنترلر، سلولهای حافظه را برای ذخیرهسازی اطلاعات برنامهریزی (Program) کند. به صورت مختصر سلولهای حافظه میزان ولتاژ خروجی گیتهای منطقی را در خود ذخیره میکنند که میتواند به صورت صفر و یک نیز تفسیر شود. این کار به SSD امکان میدهد اطلاعات مختلف را به صورت باینری (دودویی) در خود ذخیره کند. نوشتن اطلاعات (Write) در SSD، فرآیندی بسیار پیچیده است در حالیکه که خواندن اطلاعات (Read)، بسیار ساده بوده و کنترلر کار زیادی برای آن انجام نمیدهد.
حافظههای فلش NAND، خصوصیات جالبی دارند. اول اینکه برای طولانیتر نمودن زمان رسیدن به حالت غیرقابل اطمینان (پایان عمر یک حافظه فلش)، که تحت عنوان «استقامت نوشتن» یا چرخه P/E شناخته میشود میتوان آنها را برای خواندن و نوشتن به تعداد مشخص و محدود برنامهریزی نمود. برای کاهش اثر چرخه P/E و افزایش طول عمر، کنترلر از تکنیکی موسوم به Wear-Leveling استفاده میکند. به کمک این تکنیک، کنترلر پیش از نوشتن مجدد دادهها در سلول اول، از نوشته شدن اطلاعات بر روی تمام سلولها اطمینان حاصل میکند. یعنی پیش از آنکه اطلاعات برای دومین بر روی سلول اول نوشته شود، کنترلر مطمئن میشود که پیش از این از تمام سلول یک بار استفاده شده است.

خصوصیت دوم حافظههای NAND، این است که آنها توانایی Overwrite ندارند. یعنی پیش از نوشتن اطلاعات جدید، باید اطلاعات قدیمی آن سلول پاک شوند.
سومین خصوصیت NANDها، ناکارآمدی و عدم توانایی آنها در پاک کردن اطلاعات است. در یک SSD، سلولهای حافظه به صورت Pageهای معمولاً ۴ کیلوبایتی گروهبندی شدهاند. این Pageها نیز در بخشهایی بزرگتر، به نام Block دستهبندی میشوند. بلاکها معمولاً شامل ۱۲۸ Page (معادل ۵۱۲ کیلوبایت) میشوند. نوشتن اطلاعات، میتواند به صورت Page به Page انجام میشود اما حذف اطلاعات تنها به صورت بلاک به بلاک امکانپذیر است.
وقتی کاربر اقدام به حذف دیتا از روی یک SSD میکند، در عمل دادهها حذف نمیشوند. در این حالت، سیستمعامل Page به Page، با دستور TRIM، اطلاعاتی که باید حذف شوند را به عنوان دادههای Stale یا غیرمعتبر، علامتگذاری میکند. حذف واقعی زمانی اتفاق میافتد که کاربر بخواهد داده جدیدی را در آن محل درج کند. اما از آنجا که هنگام اولین استفاده از درایو SSD، اطلاعاتی برای حذف کردن و نوشتن اطلاعات جدید وجود ندارد، هنگام درج اطلاعات، کنترلر مجبور به استفاده از چیزی است که Garbage Collection نامیده میشود.
افزایش نوشتن (Write Amplification)
افزایش نوشتن (WA) به آن معنی است که حجم فیزیکی اطلاعاتی که باید در SSD درج شوند، از حجم منطقی (Logical) در نظر گرفته شده برای آنها بیشتر است. به عبارت دیگر، SSD اطلاعات مورد نظر را بر روی تعداد سلولهایی بیشتر از آنچه میزبان به کنترلر اعلام کرده است درج میکند. WA، بر روی چرخه P/E تأثیر منفی میگذارد اما در عین حال برای افزایش طول عمر SSD و بهینهسازی عملکرد آن ضروری است. مسأله تنها به تعادل رساندن سود و زیان خاصیت WA در یک SSD است. مثل بازی برجهای هانوی، که شما باید در کمترین تعداد حرکتهای ممکن، مهرهها را حرکت دهید.
WA درواقع به علت وجود Wear-Leveling و Garbage Collection اتفاق میافتد.
Garbage Collection
این ویژگی مهمترین دلیل وقوع WA است. قبل از آنکه کنترلر، یک بلاک را برای نوشتن اطلاعات جدید در Pageهای آن پاک کند، باید اطلاعات مفید و معتبر موجود در سایر Page به بلاک دیگری منتقل شود.
برای درک بهتر Garbage Collection، آن به صورت مدیریت یک آپارتمان فرض کنید. اگر آپارتمان شما خالی شود، پیش از آنکه آن را به مستأجر جدید اجاره بدهید، باید وسائل به جای مانده از مستأجر قبلی را جمعآوری نموده و ساختمان را تمیز کنید. برای جمعآوری هم باید اتاق به اتاق پیش بروید. اگر وسائل خاصی در یک اتاق داشته باشید، ابتدا باید همه آنها به یک اتاق (Block) دیگر منتقل کنید، تا بتوانید اتاق را کاملاً تمیز نمایید.
به یاد داشته باشید که Garbage Collection به این علت وجود دارد که حافظههای فلش NAND قادر به Overwrite اطلاعات نیستند و پیش از درج اطلاعات جدید، اطلاعات قدیمی باید پاکسازی شوند. علاوه بر این, حافظه NAND با اینکه اطلاعات را به صورت Page به Page درج میکند، تنها قادر به پاکسازی بلاک به بلاک آنها است.
Wear-Leveling
Wear-Leveling تکنیکی است که به صورت دینامیکی درج دادهها را مدیریت میکند. مدیریت درج دادهها به این علت صورت میگیرد که کنترلر از توزیع یکنواخت دادهها بر روی تمام سلولهای SSD مطمئن شود و با این کار, چرخه P/E برای همه سلولها و در نتیجه SSD به صورت یکنواخت پیش برود. بعضی از الگوریتمهای استفاده شده در Wear-Leveling (که Static Wear-Leveling نامیده میشوند) به طور دورهای، اطلاعات استاتیک (ثابت) مانند اطلاعات سیستمعامل یا نرمافزارها را جابهجا میکنند. به این صورت، بلاکهای کم استفاده در SSD، بیشتر به کار گرفته میشوند در نتیجه چرخه P/E در همه SSD برابر خواهد بود که نتیجه آن افزایش طول عمر SSD است.
WA، در همه SSD و در سطوح مختلف اتفاق میافتد. WA برای کار نیازمند فضایی آزاد از SSD، به عنوان بافر است. این مسأله به این معنی است که شما قادر به استفاده از تمام ظرفیت SSD خود نیستید. به طور معمول، یک SSD در بهترین حالت دارای ۲۰٪ فضای رزرو و آزاد است، که بوسیله هیچ دادهای آشغال نمیشود. مگر اینکه SSD از ویژگی Over-Provisioning یا OP بهرهمند باشد.
Over-Provisioning
OP به این معنی است که فضایی در SSD به صورت اختصاصی برای کنترلر رزرو شده و در دسترس کاربر قرار نمیگیرد. کنترلر از این فضای اختصاصی برای Garbage Collection یا Wear-Leveling یا هر ویژگی دیگر بهینهساز عملکرد SSD استفاده میکند.
به مثال آپارتمان برمیگردیم. OP در این مثال، شبیه به این است که شما در آپارتمان خود یک انباری کوچک داشته باشید. در این حالت دیگر نیاز نیست برای تمیز کردن هر اتاق, وسائل آن را به اتاق دیگر منتقل کنید، بلکه تمام وسائل در انباری گذاشته و پس از پایان کار آنها را به محل خود باز میگردانید.
به طور معمول، ۷ تا ۲۸٪ از ظرفیت درایو برای OP رزرو میشود. به همین دلیل است که SSDهای دارای OP با ظرفیتهایی مانند ۱۲۰، ۲۴۰ یا ۴۸۰ گیگابایت ارائه میشوند که با حجمهای سنتی دنیای کامپیوتر مانند ۱۲۸، ۲۵۶ یا ۵۱۲ گیگابایت تفاوت دارند. بعضی از SSDها به کاربر امکان میدهند که فضای OP را به صورت دلخواه مدیریت کنند، در سایر نمونههای کنترلر به طور خودکار آن را مدیریت میکند.
بر روی کاغذ، OP چون بافر را از چرخه فعالیت کنترلر حذف میکند، عملکرد کنترلر و بهرهوری SSD را افزایش میدهد. اما در واقعیت این مسأله، آنچنان مشخص و قابل توجه نیست.
باتوجه به مطالبی که تا اینجا بیان شده است، تنها ضعف SSDها، اگر بتوان به آن ضعف گفت، هنگام نوشتن (Write) دادهها پدیدار میشود.
تعاریف دیگر
TRIM
دستور TRIM، با این هدف طراحی شده که سیستمعامل بتواند، وجود گروهی از دادههای غیرمعتبر یا Invalid (دادههایی که توسط کاربر پاک شدهاند) در SSD را به کنترلر اعلام کند. به کمک این ویژگی کنترلر میداند که کدام بخش از اطلاعات Pageها را نباید در هنگام Garbage Collection منتقل کند. این عدم انتقال باعث میشود تعداد خواندن و نوشتن کاهش یافته و در نهایت عمر و کارآیی SSD را افزایش میدهد.
RIASE
ویژگی RIASE یا آرایه افزایشی از عناصر سیلیکونی مستقل (Redundant Array of Independent Silicon Elements) که تنها در کنترلرهای SanForce وجود دارد برای بهبود نرخ خطای دیسک طراحی شده است.
در حقیقت ویژگی RIASE بیشتر برای SSDهای مقاصد تجاری که کاربر از طریق آنها به تراکنشهای زیاد و مهم اقدام میکند کاربرد دارند.
IOPS
IOPS یا عملیات ورود و خروج در هر ثانیه (Input/Output Operation Per Second) یک واحد در حافظههای با دسترسی تصادفی (Random Access) محسوب میشوند. همانگونه که میدانید، دسترسی تصادفی، روشی برای دسترسی اطلاعات بدون نیاز به پیمایش پیوسته آنها محسوب میشود.
دسترسی تصادفی، مدت زمان لازم جهت در دسترس قرار گرفتن اطلاعات برای میزبان را تعیین میکند، مدت زمانی که تحت عنوان زمان راهاندازی (Boot Time) یا زمان اجرای نرمافزار یا کارآیی متوسط شناخته میشود. هارد دیسکها زمان دسترسی تصادفی پایینی بین ۷۵ تا ۲۵۰ IOPS دارند, در حالیکه SSD زمان دسترسی تصادفی در حدود ۵۰ تا ۱۰۰ هزار IOPS یا حتی بالاتر دارند.
امیدواریم توضیحات ارائه شده برای شما مفید باشند. نظرات خود را به دوستانتان به اشتراک بگذارید.
نظرات شما عزیزان:
:: موضوعات مرتبط:
آموزش،
،